﻿using System;
using System.Collections.Generic;

namespace QueueTest
{
    class Program
    {

        public static void Main(string[] args)
        {
            //模拟公司招人，对员工的年龄，姓名都有一定的要求。
            Person person = new Person()
            {
                Name = "Stephen Curry",
                Address = "Jinzhou",
                Age = 30
            };

            //通过Queue定义了一个fun<>委托,然后添加了CheckName和CheckAge方法. 分别将方法注册到队列中,执行每一个Check方法，一旦遇到Check不通过,然后就跳出循环。
            Queue<Func<Person, Message>> isQueue = new Queue<Func<Person, Message>>();

            Message errorMessage = null;
            isQueue.Enqueue(CheckName);
            isQueue.Enqueue(CheckAge);

            var count = isQueue.Count;
            for (int i = 0; i < count; i++)
            {
                var checkMethod = isQueue.Dequeue();
                Message Message = checkMethod(person);
                if (Message != null)
                {
                    Console.WriteLine(Message.ToString());
                    break;
                }
            }



        }
    }
}
